package xin.fsqr520.project.domain.po;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 校园卡信息表实体类
 *
 * @TableName 注解指定对应数据库表名
 */
@Data
@TableName("card")
public class Card {

    /**
     * 校园卡记录唯一标识，主键
     * @TableId 注解指定为主键，type = IdType.AUTO 表示主键自增（与数据库表中 AUTO_INCREMENT 对应）
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 关联的用户ID（对应user表的id）
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 校园卡物理卡号（唯一）
     */
    @TableField("card_id")
    private String cardId;

    /**
     * 当前余额，精确到分
     */
    @TableField("balance")
    private BigDecimal balance;

    /**
     * 累计充值金额，精确到分
     */
    @TableField("total_recharge")
    private BigDecimal totalRecharge;

    /**
     * 累计消费金额，精确到分
     */
    @TableField("total_consumption")
    private BigDecimal totalConsumption;

    /**
     * 校园卡密码（加密存储）
     */
    @TableField("password")
    private String password;

    /**
     * 卡状态：0-冻结，1-正常，2-挂失
     */
    @TableField("status")
    private Integer status;

    /**
     * 记录创建时间
     * 注意：数据库中是 TIMESTAMP 类型，这里用 LocalDateTime 接收，MyBatis-Plus 可自动处理类型转换
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 记录更新时间
     * 注意：数据库中是 TIMESTAMP 类型，这里用 LocalDateTime 接收，MyBatis-Plus 可自动处理类型转换
     */
    @TableField("update_time")
    private LocalDateTime updateTime;
}